1 Background

See README.md.

2 Scripts

Sequence of scripts:

3 Prologue

  1. Load devtools
  2. Source the loadPkg function
  3. Load packages
  4. Source the makeMetadata function
  5. Start the job timer
## Sourcing https://gist.githubusercontent.com/benjamin-chan/3b59313e8347fffea425/raw/c03cd15480a6444399ff5f34892f5911d6e12b44/loadPkg.R
## SHA-1 hash of file is 0bb1bb041c1dda15ee613db701d0c5784d1196a5
## Sourcing https://gist.githubusercontent.com/benjamin-chan/091209ab4eee1f171540/raw/156a5e29111d0da6ec5693f5a881628e10fb9613/makeMetadata.R
## SHA-1 hash of file is 8b07ca14d3606ec83f76e636e7f9088e73a003b0

4 Replicate Ono

Replicate data from Ono, Miyuki, et al. “A Meta-Analysis of Cognitive Impairment and Decline Associated with Adjuvant Chemotherapy in Women with Breast Cancer.” Front Oncol. 2015; 5: 59.

Data file was requested and received from the co-author, James Ogilvie, in October 2015.

Read data file (Google Sheet format).

# path <- "StudyDocuments/CognitiveImpairment"
# list.files(path)
# f <- sprintf("%s/%s", path, "Requested Chemo Data.xlsx")
url <- "https://docs.google.com/spreadsheets/d/1kANi0laOaoFbBXxbanARcp7zowQ5eOfOcOr_sQLhJHo/edit?usp=sharing"
gs_auth()
gs_url(url)
## Sheet-identifying info appears to be a browser URL.
## googlesheets will attempt to extract sheet key from the URL.
## Putative key: 1kANi0laOaoFbBXxbanARcp7zowQ5eOfOcOr_sQLhJHo
## Authentication will be used.
## Sheet successfully identifed: "Requested Chemo Data.xlsx"
##                   Spreadsheet title: Requested Chemo Data.xlsx
##                  Spreadsheet author: benjamin.ks.chan
##   Date of googlesheets registration: 2015-10-30 16:51:42 GMT
##     Date of last spreadsheet update: 2015-10-03 14:30:34 GMT
##                          visibility: private
##                         permissions: rw
##                             version: new
## 
## Contains 1 worksheets:
## (Title): (Nominal worksheet extent as rows x columns)
## Sheet1: 1000 x 79
## 
## Key: 1kANi0laOaoFbBXxbanARcp7zowQ5eOfOcOr_sQLhJHo
## Browser URL: https://docs.google.com/spreadsheets/d/1kANi0laOaoFbBXxbanARcp7zowQ5eOfOcOr_sQLhJHo/
# D0 <- read.xlsx(f, sheet=1)
D0 <- gs_read(gs_url(url))
## Sheet-identifying info appears to be a browser URL.
## googlesheets will attempt to extract sheet key from the URL.
## Putative key: 1kANi0laOaoFbBXxbanARcp7zowQ5eOfOcOr_sQLhJHo
## Authentication will be used.
## Sheet successfully identifed: "Requested Chemo Data.xlsx"
## Accessing worksheet titled "Sheet1"
D0 <- data.table(D0)

Show a map of the column names and locations.

colNames <- data.frame(colNum = 1:ncol(D0),
                       colCell = c(LETTERS,
                                   sprintf("%s%s", LETTERS[1], LETTERS),
                                   sprintf("%s%s", LETTERS[2], LETTERS),
                                   sprintf("%s%s", LETTERS[3], LETTERS))[1:ncol(D0)],
                       varName = names(D0))
colNames
##    colNum colCell                  varName
## 1       1       A               First.Auth
## 2       2       B                Study.Ref
## 3       3       C                 Pub.Year
## 4       4       D                  Journal
## 5       5       E                 Pre.Meta
## 6       6       F                   Design
## 7       7       G                 Comp.Grp
## 8       8       H            Healthy_GROUP
## 9       9       I                   Tx.Grp
## 10     10       J   Pre.Post.Time.Interval
## 11     11       K                  Time.SD
## 12     12       L                     Tx.N
## 13     13       M                    Ctl.N
## 14     14       N                  Total.N
## 15     15       O                   Tx.Age
## 16     16       P                Tx.Age.SD
## 17     17       Q                  Ctl.Age
## 18     18       R               Ctl.Age.SD
## 19     19       S                    Tx.IQ
## 20     20       T                 Tx.IQ.SD
## 21     21       U                   Ctl.IQ
## 22     22       V                Ctl.IQ.SD
## 23     23       W                  IQ.Note
## 24     24       X                   Tx.EDU
## 25     25       Y                Tx.EDU.SD
## 26     26       Z                  Ctl.EDU
## 27     27      AA               Ctl.EDU.SD
## 28     28      AB                 EDU.Note
## 29     29      AC             Tx.Chem.Time
## 30     30      AD          Tx.Chem.Time.SD
## 31     31      AE Cognitive.Domain.Primary
## 32     32      AF                 Cog.Test
## 33     33      AG                Score.Typ
## 34     34      AH                     Tx.M
## 35     35      AI                    Tx.SD
## 36     36      AJ                    Ctl.M
## 37     37      AK                   Ctl.SD
## 38     38      AL             Direct.Notes
## 39     39      AM                    X1.X2
## 40     40      AN                   Tx.N.1
## 41     41      AO                  Ctl.N.1
## 42     42      AP                  Tx.SD.2
## 43     43      AQ                 Ctl.SD.2
## 44     44      AR                  Spooled
## 45     45      AS                Cohen.s.d
## 46     46      AT                 Hedges.g
## 47     47      AU                     Var1
## 48     48      AV                     Var2
## 49     49      AW                 Variance
## 50     50      AX           Standard.Error
## 51     51      AY                   Weight
## 52     52      AZ                     w.ES
## 53     53      BA                   w.ES.2
## 54     54      BB                      w.2
## 55     55      BC                  StudyES
## 56     56      BD                  StudySE
## 57     57      BE                        z
## 58     58      BF                  LowerCI
## 59     59      BG                  UpperCI
## 60     60      BH                        Q
## 61     61      BI                       df
## 62     62      BJ               Q.Critical
## 63     63      BK           Q.Sig...p..05.
## 64     64      BL            RANDOM.EFFECT
## 65     65      BM                     RE_w
## 66     66      BN                   w.ES.1
## 67     67      BO                 w.ES.2.1
## 68     68      BP                    w.2.1
## 69     69      BQ                StudyES.1
## 70     70      BR                StudySE.1
## 71     71      BS                      z.1
## 72     72      BT                LowerCI.1
## 73     73      BU                UpperCI.1
## 74     74      BV                      Q.1
## 75     75      BW                     df.1
## 76     76      BX             Q.Critical.1
## 77     77      BY         Q.Sig...p..05..1
## 78     78      BZ                I.2.Fixed
## 79     79      CA               I.2.Random

Put the summary rows in a separate data table, DOno.

DOno <- D0[is.na(First.Auth), c(51:ncol(D0)), with=FALSE]

Put the instrument-level rows in a separate data table, D. Only keep the columns needed to calculate fixed and random effects statistics.

Need more information on the RANDOM.EFFECT column. This column has a mean of 0.161462 and a standard deviation of 0. It’s a mystery where this comes from.

importantVar <- c(1, 7:10, 12:15, 17, 34:38, 64, 31:33)
D <- D0[!is.na(First.Auth), importantVar, with=FALSE]
setnames(D,
         names(D),
         c("author",
           "comparisonGroup",
           "healthyGroup",
           "treatmentGroup",
           "timeDays",
           "nGroup1",
           "nGroup2",
           "nTotal",
           "ageGroup1",
           "ageGroup2",
           "meanGroup1",
           "sdGroup1",
           "meanGroup2",
           "sdGroup2",
           "direction",
           "randomEffect",
           gsub("\\.", "", names(D0)[31:33])))  # NEED TO FIND OUT WHERE RANDOM EFFECT COMES FROM
D <- D[direction == "Lower worse",
       `:=` (diffMean = meanGroup2 - meanGroup1)]
D <- D[direction == "Greater worse",
       `:=` (diffMean = meanGroup1 - meanGroup2)]
D <- D[,
       `:=` (sdPooled = sqrt((((nGroup1 - 1) * (sdGroup1 ^ 2)) +
                                ((nGroup2 - 1) * (sdGroup2 ^ 2))) /
                               (nGroup1 + nGroup2 - 2)))]
D <- D[,
       `:=` (cohenD = diffMean / sdPooled)]
D <- D[,
       `:=` (hedgesG = cohenD * (1 - (3 / ((4 * nTotal) - 9))))]
D <- D[,
       `:=` (var1 = (nGroup1 + nGroup2) / (nGroup1 * nGroup2),
             var2 = hedgesG ^ 2 / (2 * (nGroup1 + nGroup2)))]
D <- D[,
       `:=` (variance = var1 + var2)]
D <- D[,
       `:=` (se = sqrt(variance),
             weightFE = 1 / variance)]
D <- D[,
       `:=` (effSizeWeightedFE = weightFE * hedgesG)]
D <- D[, weightRE := 1 / (variance + randomEffect)]
D <- D[, effSizeWeightedRE := weightRE * hedgesG]

Domains and tests.

D[, .N, .(CognitiveDomainPrimary, CogTest)][order(CognitiveDomainPrimary, CogTest)]
##     CognitiveDomainPrimary                            CogTest N
##  1:              Attention               Arithmetic: WAIS-III 2
##  2:              Attention      Digit Symbol Coding: WAIS-III 2
##  3:              Attention               Digit span: WAIS-III 2
##  4:              Attention               PASAT number correct 2
##  5:              Attention                    TMT part A time 2
##  6:              Attention                           Trails A 2
##  7:              Attention                  WAIS-R arithmetic 2
##  8:              Attention                  WAIS-R digit span 2
##  9:              Attention                WAIS-R digit symbol 2
## 10:              Attention       WMS-III digit span backwards 2
## 11:              Attention         WMS-III digit span forward 2
## 12:              Attention     WMS-III spatial span backwards 2
## 13:              Attention      WMS-III spatial span forwards 2
## 14:     Executive Function                 Consonant trigrams 2
## 15:     Executive Function                             Stroop 2
## 16:     Executive Function                    TMT part B time 2
## 17:     Executive Function                           Trails B 2
## 18:     Executive Function  Verbal Fluency FAS number correct 2
## 19:     Executive Function       Verbal fluency COWAT correct 2
## 20:     Executive Function       WCST sorts divided by trials 2
## 21:                    LTM                       AVLT delayed 2
## 22:                    LTM                CVLT delayed recall 2
## 23:                    LTM           CVLT delayed recognition 2
## 24:                    LTM             Complex figure delayed 2
## 25:                    LTM        Family pictures II: WMS-III 2
## 26:                    LTM         Logical memory II: WMS-III 2
## 27:                    LTM                RAVL delayed recall 4
## 28:                    LTM                   RAVL total score 4
## 29:                    LTM                       RAVL trial 6 4
## 30:                    LTM                 RCF delayed recall 4
## 31:                    LTM                RVLT delayed recall 2
## 32:                    LTM           RVLT delayed recognition 2
## 33:                    LTM              Spatial span: WMS-III 2
## 34:                    LTM       WMS-III Story delayed recall 2
## 35:               Language  Boston Naming Test number correct 2
## 36:               Language                WAIS-R similarities 2
## 37:                  Motor             Grooved Peg Board time 2
## 38:                  Motor     Grooved pegboard dominant hand 2
## 39:                  Motor  Grooved pegboard nondominant hand 2
## 40:             Processing                Letter cancellation 2
## 41:             Processing            Symbol search: WAIS-III 2
## 42:                    STM                       4WSTM 15 sec 4
## 43:                    STM                       4WSTM 30 sec 4
## 44:                    STM                        4WSTM 5 sec 4
## 45:                    STM                     AVLT supraspan 2
## 46:                    STM                         AVLT total 2
## 47:                    STM                       CVLT Trial 1 2
## 48:                    STM           Complex figure immediate 2
## 49:                    STM Letter-number sequencing: WAIS-III 2
## 50:                    STM               RCF immediate recall 4
## 51:                    STM                       RVLT trial 1 2
## 52:                    STM     WMS-III Story immediate recall 2
## 53:                    STM   WMS-III letter number sequencing 2
## 54:           Visuospatial             Block design: WAIS-III 2
## 55:           Visuospatial                WAIS-R block design 2
##     CognitiveDomainPrimary                            CogTest N

Calculate fixed effects statisitcs.

DFixed <- D[,
              .(df = .N,
                sumWeights = sum(weightFE),
                effSize = sum(effSizeWeightedFE) / sum(weightFE),
                se = sqrt(1 / sum(weightFE)),
                sumEffSizeWeighted = sum(effSizeWeightedFE),
                ssEffSizeWeighted = sum(weightFE * hedgesG ^ 2),
                ssWeights = sum(weightFE ^ 2)),
              .(author, timeDays)]
DFixed <- DFixed[,
                 `:=` (z = effSize / se,
                       lowerCI = effSize + qnorm(0.025) * se,
                       upperCI = effSize + qnorm(0.975) * se,
                       Q = ssEffSizeWeighted - (sumEffSizeWeighted ^ 2 / sumWeights),
                       criticalValue = qchisq(0.05, df, lower.tail=FALSE))]
DFixed <- DFixed[,
                 `:=` (pvalue = pchisq(Q, df, lower.tail=FALSE),
                       Isq = 100 * ((Q - df) / Q))]

Check if my calculations agree with Ono’s.

isCheckFixedPassed <- all.equal(DOno[, .(StudyES, z, Q)], 
                                DFixed[, .(effSize, z, Q)],
                                check.names=FALSE)
message(sprintf("Do my FIXED effect statistic calculations agree with Ono's? %s",
                isCheckFixedPassed))
## Do my FIXED effect statistic calculations agree with Ono's? TRUE
print(xtable(DFixed), type="html")
author timeDays df sumWeights effSize se sumEffSizeWeighted ssEffSizeWeighted ssWeights z lowerCI upperCI Q criticalValue pvalue Isq
1 Bender 182.62 16 96.80 1.02 0.10 98.53 241.49 626.88 10.01 0.82 1.22 141.21 26.30 0.00 88.67
2 Bender 547.50 16 63.53 0.55 0.13 34.76 285.90 290.59 4.36 0.30 0.79 266.88 26.30 0.00 94.00
3 Collins 537.90 23 604.56 0.21 0.04 124.90 39.49 15893.07 5.08 0.13 0.29 13.69 35.17 0.94 -68.01
4 Collins 146.50 23 607.30 0.10 0.04 58.14 17.63 16035.80 2.36 0.02 0.18 12.07 35.17 0.97 -90.58
5 Jenkins 364.00 14 592.05 0.08 0.04 47.58 23.62 25038.13 1.96 -0.00 0.16 19.79 23.68 0.14 29.27
6 Jenkins 28.00 14 593.46 0.03 0.04 19.46 12.29 25157.32 0.80 -0.05 0.11 11.65 23.68 0.63 -20.17
7 Wefel 182.62 10 89.09 0.18 0.11 15.73 5.24 793.76 1.67 -0.03 0.38 2.47 18.31 0.99 -305.57
8 Wefel 547.86 10 79.52 0.26 0.11 20.75 8.62 632.66 2.33 0.04 0.48 3.20 18.31 0.98 -212.29

Calculate random effects statisitcs.

DRandom <- D[,
             .(df = .N,
               sumWeights = sum(weightRE),
               ssEffSizeWeighted = sum(weightRE * hedgesG ^ 2),
               ssWeights = sum(weightRE ^ 2),
               sumEffSizeWeighted = sum(effSizeWeightedRE),
               effSize = sum(effSizeWeightedRE) / sum(weightRE),
               se = sqrt(1 / sum(weightRE))),
             .(author, timeDays)]
DRandom <- DRandom[,
                   `:=` (z = effSize / se,
                         lowerCI = effSize + qnorm(0.025) * se,
                         upperCI = effSize + qnorm(0.975) * se,
                         Q = ssEffSizeWeighted - (sumEffSizeWeighted ^ 2 / sumWeights),
                         criticalValue = qchisq(0.05, df, lower.tail=FALSE))]
DRandom <- DRandom[,
                   `:=` (pvalue = pchisq(Q, df, lower.tail=FALSE),
                         Isq = 100 * ((Q - df) / Q))]

Check if my calculations agree with Ono’s.

isCheckRandomPassed <- all.equal(DOno[, c(19, 21, 24), with=FALSE], 
                                 DRandom[, .(effSize, z, Q)],
                                 check.names=FALSE)
message(sprintf("Do my RANDOM effect statistic calculations agree with Ono's? %s",
                isCheckRandomPassed))
## Do my RANDOM effect statistic calculations agree with Ono's? TRUE
print(xtable(DRandom), type="html")
author timeDays df sumWeights ssEffSizeWeighted ssWeights sumEffSizeWeighted effSize se z lowerCI upperCI Q criticalValue pvalue Isq
1 Bender 182.62 16 48.04 137.29 147.43 53.60 1.12 0.14 7.73 0.83 1.40 77.50 26.30 0.00 79.35
2 Bender 547.50 16 37.25 199.95 92.56 26.23 0.70 0.16 4.30 0.38 1.03 181.48 26.30 0.00 91.18
3 Collins 537.90 23 115.28 7.62 577.83 23.96 0.21 0.09 2.23 0.03 0.39 2.64 35.17 1.00 -770.38
4 Collins 146.50 23 115.38 3.38 578.84 11.11 0.10 0.09 1.03 -0.09 0.28 2.31 35.17 1.00 -895.09
5 Jenkins 364.00 14 75.63 3.04 408.57 6.11 0.08 0.11 0.70 -0.14 0.31 2.54 23.68 1.00 -450.68
6 Jenkins 28.00 14 75.65 1.57 408.83 2.50 0.03 0.11 0.29 -0.19 0.26 1.49 23.68 1.00 -840.71
7 Wefel 182.62 10 36.53 2.16 133.47 6.48 0.18 0.17 1.07 -0.15 0.50 1.01 18.31 1.00 -890.02
8 Wefel 547.86 10 34.81 3.79 121.21 9.12 0.26 0.17 1.55 -0.07 0.59 1.41 18.31 1.00 -611.34

Save working data tables to file if the integrity checks passed. I don’t need to save DOno since the integrity checks passed.

metadataD = makeMetadata(D)
metadataDFixed = makeMetadata(DFixed)
metadataDRandom = makeMetadata(DRandom)
if (isCheckFixedPassed & isCheckRandomPassed) {
  f <- "Ono.RData"
  save(D,
       metadataD,
       DFixed,
       metadataDFixed,
       DRandom,
       metadataDRandom,
       file=f)
  message(sprintf("%s saved on: %s\nFile size: %s bytes", 
                  f,
                  file.mtime(f),
                  file.size(f)))
} else {
  warning(sprinf("Integrity checks failed.\n%s not saved.", f))
}
## Ono.RData saved on: 2015-10-30 09:51:44
## File size: 67458 bytes

5 Read Ahles

Read data from Ahles TA, et al. “Longitudinal Assessment of Cognitive Changes Associated With Adjuvant Treatment for Breast Cancer: Impact of Age and Cognitive Reserve.” J Clin Oncol. 2010 Oct 10; 28(29): 4434-4440.

Data file was requested and received from the co-author, Yuelin Li, in October 2015.

Read data file (text format).

path <- "StudyDocuments/CognitiveImpairment"
# list.files(path)
f <- sprintf("%s/%s", path, "Soulsby_means.txt")
D <- fread(f, sep="|")

Study design.

D[, .(nrows = .N, totalN = sum(N)), .(txgrp, ptime)]
##        txgrp    ptime nrows totalN
##  1:    chemo baseline    35   2056
##  2:    chemo   posttx    35   1886
##  3:    chemo      1yr    35   1677
##  4:    chemo      2yr    35   1549
##  5: chemo no baseline    35   2432
##  6: chemo no   posttx    35   2321
##  7: chemo no      1yr    35   2237
##  8: chemo no      2yr    35   2138
##  9:  control baseline    35   1522
## 10:  control   posttx    35   1478
## 11:  control      1yr    35   1447
## 12:  control      2yr    35   1346

Instruments.

D[, .N, .(Variable, Label)]
##           Variable                                              Label  N
##  1: AN_NAMES_z_adj DKEFS Verbal Fluency: anival or clothing and names 12
##  2:   BD_RAW_z_adj                                 WASI: Block Design 12
##  3:      CFL_z_adj                               DKEFS Verbal Fluency 12
##  4:     CVLT_z_adj                           CVLT-2: Trials 1-5 Total 12
##  5:  DCCSORT_z_adj        DKEFS Card Sorting: Confirmed Correct Sorts 12
##  6:    DCOLT_z_adj                   DKEFS Stroop: Color Patch Naming 12
##  7:     DCSC_z_adj       DKEFS Verbal Fluency: Switching Fruits/Veget 12
##  8:     DCWT_z_adj                           DKEFS Stroop: Color-Word 12
##  9:   DFSDES_z_adj                   DKEFS Card Sorting: Free Sorting 12
## 10:    DISCR_z_adj            CPT: Distractibility, Correct Responses 12
## 11:    DISFP_z_adj              CPT: Distractibility, False Positives 12
## 12:    DISRT_z_adj                CPT: Distractibility, Reaction Time 12
## 13:  DRECDES_z_adj              DKEFS: Card Sorting, Sort Recognition 12
## 14:      DST_z_adj                        DKEFS: Stroop, Set Shifting 12
## 15:  DSY_RAW_z_adj                               CVLT-2: Digit Symbol 12
## 16:   DTR1SC_z_adj           DKEFS Trails: Visual Scanning in Seconds 12
## 17:   DTR2SC_z_adj               DKEFS Trails: Number Sequencing, sec 12
## 18:   DTR3SC_z_adj               DKEFS Trails: Letter Sequencing, sec 12
## 19:   DTR4SC_z_adj         DKEFS Trails: Number-Letter Switching, sec 12
## 20:   DTR5SC_z_adj                     DKEFS Trails: Motor Speed, sec 12
## 21:    DWRDT_z_adj                    DKEFS Stroop: Word Reading, sec 12
## 22:    FACE1_z_adj                   Wechsler Memory Scale-3: Faces I 12
## 23:    FACE2_z_adj                  Wechsler Memory Scale-3: Faces II 12
## 24:  GROOVEL_z_adj              Grooved Pegboard Test: Left Hand, sec 12
## 25:  GROOVER_z_adj             Grooved Pegboard Test: Right Hand, sec 12
## 26:       LD_z_adj                     CVLT-2: Long Delay Free Recall 12
## 27:      LM1_z_adj          Wechsler Memory Scale-3: Logical Memory I 12
## 28:      LM2_z_adj         Wechsler Memory Scale-3: Logical Memory II 12
## 29:     RAO2_z_adj                       PASAT (Rao): 2 second pacing 12
## 30:     RAO3_z_adj                       PASAT (Rao): 3 second pacing 12
## 31: READ_RAW_z_adj                               WRAT-3 Reading Score 12
## 32:    VIGCR_z_adj                  CPT: Vigilance, Correct Responses 12
## 33:    VIGFP_z_adj                    CPT: Vigilance, False Positives 12
## 34:    VIGRT_z_adj                      CPT: Vigilance, Reaction Time 12
## 35:  VOC_RAW_z_adj                                   WASI: Vocabulary 12
##           Variable                                              Label  N

Save working data tables to file if the integrity checks passed. I don’t need to save DOno since the integrity checks passed.

metadata = makeMetadata(D)
f <- "Ahles.RData"
save(D, metadata, file=f)
message(sprintf("%s saved on: %s\nFile size: %s bytes", 
                f,
                file.mtime(f),
                file.size(f)))
## Ahles.RData saved on: 2015-10-30 09:51:44
## File size: 24207 bytes

6 Epilogue

## Sourcing https://gist.githubusercontent.com/benjamin-chan/80149dd4cdb16b2760ec/raw/a1fafde5c5086024dd01d410cc2f72fb82e93f26/sessionInfo.R
## SHA-1 hash of file is 41209357693515acefb05d4b209340e744a1cbe4
## $timeStart
## [1] "2015-10-30 09:51:41"
## 
## $timeEnd
## [1] "2015-10-30 09:51:44 PDT"
## 
## $timeElapsed
## [1] "3.597 secs"
## 
## $Sys.info
##                      sysname                      release 
##                    "Windows"                      "7 x64" 
##                      version                     nodename 
## "build 7601, Service Pack 1"                    "GHBA299" 
##                      machine                        login 
##                     "x86-64"                      "chanb" 
##                         user               effective_user 
##                      "chanb"                      "chanb" 
## 
## $sessionInfo
## R version 3.2.2 (2015-08-14)
## Platform: x86_64-w64-mingw32/x64 (64-bit)
## Running under: Windows 7 x64 (build 7601) Service Pack 1
## 
## locale:
## [1] LC_COLLATE=English_United States.1252 
## [2] LC_CTYPE=English_United States.1252   
## [3] LC_MONETARY=English_United States.1252
## [4] LC_NUMERIC=C                          
## [5] LC_TIME=English_United States.1252    
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] xtable_1.7-4       googlesheets_0.1.0 RColorBrewer_1.1-2
## [4] extrafont_0.17     DiagrammeR_0.7     V8_0.9            
## [7] devtools_1.8.0     data.table_1.9.6  
## 
## loaded via a namespace (and not attached):
##  [1] Rcpp_0.12.1      rstudioapi_0.3.1 Rttf2pt1_1.3.3   knitr_1.11      
##  [5] xml2_0.1.2       magrittr_1.5     R6_2.1.1         dplyr_0.4.3     
##  [9] httr_1.0.0       stringr_1.0.0    tools_3.2.2      parallel_3.2.2  
## [13] DBI_0.3.1        extrafontdb_1.0  git2r_0.11.0     htmltools_0.2.6 
## [17] rversions_1.0.2  lazyeval_0.1.10  assertthat_0.1   yaml_2.1.13     
## [21] digest_0.6.8     formatR_1.2      htmlwidgets_0.5  curl_0.9.3      
## [25] memoise_0.2.1    evaluate_0.7.2   rmarkdown_0.7    stringi_0.5-5   
## [29] cellranger_1.0.0 jsonlite_0.9.16  chron_2.3-47